home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacWorld 1999 January - Disc 2
/
Macworld (1999-01) (Disk 2).dmg
/
Serious Demos
/
Symbolic Composer 4.2
/
Environment
/
Projects
/
Examples
/
Demos
/
Another Byte
< prev
next >
Wrap
Lisp/Scheme
|
1998-10-26
|
6KB
|
251 lines
; 2by3 trio for flute and 2 bass guitars: complete score
; commissioned by BBC Radio 3 for 'Another Byte'
; by Nigel Morgan
; to analyze the score double-click high-lighted keywords
(create-tonality full-dim
'(c 4 d 4 d# 4 f 4 f# 4 g# 4 a 4 b 4
; a b c d e f g h
c# 4 d# 4 e 4 f# 4 g 4 a 4 a# 4))
; i j k l m n o
(setq m1 '(a a -b a) ; section 1
m2 '(= = = =)
m3 '(b a -b)
m4 '(b -d -c -b)
m5 '(-d d -c b -b)
m6 '(l k j i -c -b)
m7 '(= a c d)
m8 '(e f h)
m9 '(e f h o)
m10 '(e f h o l)
m11 '(e f o l h m)
codab1 '(= ap = =) ; coda
codab2 '(= a-p = =)
codaf '(= m = =)
n1 '(a ae = ae) ; section 2
n2 '(= = hl =)
n3 '(= ae =)
n4 '(= hl =)
n5 '(= ae bf cg =)
n6 '(il = = = lp)
n7 '(b d f h o m k i)
)
(setq set1a (append m1 m2 m1 m3 ; 2/4 7/16
m2 m1 m2 m4 ; 2/4 2/4
m1 m3 m2 m5 ; 7/16 9/16
m2 m4 m1 m6) ; 2/4 10/16
)
(setq set1b (append m2 m1 m2 m3
m1 m2 m1 m4
m2 m3 m1 m5
m1 m4 m2 m6)
)
(setq set1c (append m2 m7 m2 m8
m7 m2 m7 m9
m2 m8 m7 m10
m7 m9 m2 m11)
)
(setq set2a (append n1 n1 m1 n1 ; 2/4 2/4 ;; bass
n2 n2 n3 n5 ; 2/4 8/16
m7 m9 n4 n6 ; 2/4 8/16
n2 n2 m10 n7) ; 2/4 5/16 8/16
)
(setq set2b (append n2 n2 m7 n2 ; bass
n1 n1 n4 n6
m2 m7 m8 m5
n1 n1 (reverse n6) n7)
)
;; flute material
(setq set1a/b (append set1c
(find-change
(gen-random 0.1 (length set1a)
'(a -b b c -c d -d e f g h))))
)
(setq set2a/b (find-change
(gen-random 0.1 (* (length set2a) 2)
'(b d f h o m k i)))
)
;; dynamics : sections 1 & 2
(setq v1 '(96 72 100 64)
v2 '(0 0 0 0)
v3 '(96 64 72)
v3h '(0 110 0)
v4 '(100 54 64 74)
v5 '(110 54 64 74 110)
v6 '(112 64 74 96 74 84)
v7 '(32 45 54 64 74 84 94 110)
codav '(0 127 0 0)
)
(setq vel1a (append v1 v2 v1 v3
v2 v1 v2 v4
v1 v3 v2 v5
v2 v4 v1 v6)
)
(setq vel1b (append v2 v1 v2 v3
v1 v2 v1 v4
v2 v3 v1 v5
v1 v4 v2 v6)
)
(setq vel2a/b (append v1 v1 v2 v1
v1 v1 v3h v5
v2 v1 v3h v5
v1 v1 v5 v7)
)
(setq vel2ci (append v2 v2 v2 v1
v2 v2 v3 v5
v2 v2 v3 v5
v2 v2 v5 v7)
)
(setq vel2cii (append v2 v1 v1 v2
v2 v1 v3 v5
v2 v1 v3 v5
v2 v1 v5 v7)
)
;; section 3 : with free solos
(setq o1 '(a -p -b ae = = = = = = = = = = = = = -o o -b) ; 5/4
o2 '(= -b-g = = = -d-h -d-h =) ; 2/4
o3 '(a -b -c c b a g f e) ; 9/16
o4 '(= = = = = il = = m l k j o m k j = = = =) ; 5/4
o5 '(= -b b d f = = -c) ; 2/4
o6 '(= = = = f d b -b -d) ; 9/16
o1r (build-list '= (length o1)) ; 5/4
o2r (build-list '= (length o2)) ; 2/4
o7 (symbol-transpose 3 '(= e = e = = =))
o7r (build-list '= (length o7)) ; 7/16
)
(setq set3a (append o1 o1 o1 o1 ; 5/4 5/4 5/4 5/4
o2 o2 o2 o3 ; 2/4 2/4 2/4 9/16
o1r o1r o4 o4 ; 5/4 5/4 5/4 5/4
o2r o2r o5 o6 o6 o7r) ; 2/4 2/4 2/4 9/16 9/16 7/16
)
(setq set3b (append o1r o1r o4 o4
o2r o2r o5 o6
o1 o1 o1 o1
o2 o2 o2 o3 (symbol-transpose 5 o3) o7r)
)
(setq set3c (append o1r o1r o4 o4
o5 (symbol-inversion 'a o5) o2r o3
o1r o1r o4 o4
o5 (symbol-inversion 'c o5) o2r o3
(symbol-transpose 3 o3) o7)
)
;; dynamics: section 3
(setq v8 (gen-repeat 5 '(74 64 84 100))
v9 '(96 100 64 74 84 96 110 112)
v10 '(32 42 52 62 72 82 92 102 112)
v11 '(0 120 0 120 0 0 0)
)
(setq vel3 (append (gen-repeat 2
(append v8 v8 v8 v8
v9 v9 v9 v10)) v10 v11)
)
(def-tonality
flute (activate-tonality
(full-dim e 6) (full-dim e 6) (full-dim e 6)
(full-dim e& 6) (full-dim e 6))
default (activate-tonality
(full-dim e 3) (full-dim d& 3) (full-dim e 3)
(full-dim f 3) (full-dim e 3))
)
(def-symbol
flute (append
set1a/b set2a/b set1a/b ; section 1 & 2 & 1
set3c ; section 3
set1a/b ; section1
codaf); coda
bass1 (append
set1a set1b set2a set2b set1a set1b ; section 1 & 2 & 1
set3a ; section 3
set1a set1b ; section 1
codab1) ; coda
bass2 (append
set1b set1a set2b set2a set1b set1a
set3b
set1b set1a
codab2)
)
(def-length
default '(1/16)
)
(def-zone
default (list (* (length (append set1a set1b)) 120) ; section 1
(* (length (append set2a set2b)) 120) ; section 2
(* (length (append set1a set1b)) 120) ; section 1
(* (length set3a) 120) ; section 3
(* (length (append set1a set1b)) 120) ; section 1
(* 4 120)) ; coda
)
(def-velocity
flute (append
vel1b vel1a vel2ci vel2cii vel1b vel1a
vel3
vel1b vel1a codav)
bass1 (append
vel1a vel1b vel2a/b vel2a/b vel1a vel1b
vel3
vel1a vel1b codav)
bass2 (append
vel1b vel1a vel2a/b vel2a/b vel1b vel1a
vel3
vel1b vel1a codav)
)
(def-channel
flute 3
bass1 1
bass2 2
)
(def-program gm-sound-set
flute flute
bass1 slap-bass-2
bass2 slap-bass-2
)
(def-controller gm-controllers
(flute panning '((64)))
(bass1 panning '((16)))
(bass2 panning '((110)))
)
(def-tempo 80)
(midiport :printer)
(compile-instrument-p "ccl;output:" "Another byte midi"
flute
bass1
bass2
)